import { ref } from 'vue';

export function useLockFn(fn: (...args: any[]) => Promise<any>) {
  const isLock = ref(false);
  const lockFn = async (...args: any[]) => {
    if (isLock.value) return;
    isLock.value = true;
    try {
      const res = await fn(...args);
      isLock.value = false;
      return res;
    } catch (error) {
      isLock.value = false;
      throw error;
    }
  };
  return {
    isLock,
    lockFn,
  };
}
